package com.cw.myset;

import java.util.Comparator;
import java.util.TreeSet;

public class TreeSetDemo3 {
    public static void main(String[] args) {
/*
        需求：请自行选择比较器排序和自然排序两种方式；
        需求：存入4个字符串，"c","ab","df","qwer"
        按照长度排序，如果一样长则按照首字母排序

        由于String源码中采用了实现Comparable接口重写compareTo方法进行排序，
        无法满足此处要求，所以需要采用比较器排序
*/
        //1.创建集合
        //o1:表示当前要添加的元素
        //o2:表示已经在红黑树存在的元素
        //返回值规则与之前一致
        /*    返回值：
    负数：表示当前要添加的元素是小的，存左边
    正数：表示当前要添加的元素是大的，存右边
    0：表示当前添加的元素已经存在，舍弃*/
//        TreeSet<String> ts = new TreeSet<>(new Comparator<String>() {
//            @Override
//            public int compare(String o1, String o2) {
//                // 按照长度排序
//                int i = o1.length()-o2.length();
//                //如果长度一样则按照首字母排序
//                i = i == 0 ? o1.compareTo(o2) : i;
//                return i;
//            }
//        });

        //lambda表达式
        TreeSet<String> ts = new TreeSet<>((o1, o2)-> {
                // 按照长度排序
                int i = o1.length()-o2.length();
                //如果长度一样则按照首字母排序
                i = i == 0 ? o1.compareTo(o2) : i;
                return i;
            }
        );

        //2.添加元素
        ts.add("c");
        ts.add("df");
        ts.add("ab");
        ts.add("qwer");

        //3.打印集合
        System.out.println(ts);
    }
}
